package br.fafica.poo2.rightcode.disciplina;
import java.util.ArrayList;

import br.fafica.poo2.rightcode.Aplicacao;
import br.fafica.poo2.rightcode.exception.DisciplinaNaoEncontradaException;
import br.fafica.poo2.rightcode.usuario.Usuario;


public class RepositorioDisciplinaArrayList  implements IRepositorioDisciplina{
	private ArrayList <Disciplina> disciplinas;
	private static int increment;


	public RepositorioDisciplinaArrayList(){
		disciplinas = new ArrayList <Disciplina> ();
		increment = (getCodigoIncrement()+1);
		System.err.println("CONTRUTOR DE ARRAYLIST DISCIPLINA");
	}
	
	private int getCodigoIncrement(){
		return disciplinas.size();
	}

	@Override
	public void TesteDisciplina() {
		// TODO Auto-generated method stub
		
	}


	@Override
	public void InstalarDisciplina(boolean samples) {
		if(samples){
			Aplicacao app = new Aplicacao();
			for(Disciplina d: app.getDisciplina()){
				AdicionarDisciplina(d);
			}
		}
		
	}


	@Override
	public void AdicionarDisciplina(Disciplina disciplina) {
		if(disciplina.getCodigo()==0){
			disciplina.setCodigo(increment);
			increment+=1;
		}
		disciplinas.add(disciplina);
		
	}


	@Override
	public void RemoverDisciplina(Disciplina disciplina) {
		disciplinas.remove(disciplina);
		
	}


	@Override
	public Disciplina BuscarDisciplina(int codigo) {
		Disciplina busca = null;
		for(int i = 0; i < disciplinas.size();i++){
			if(codigo==disciplinas.get(i).getCodigo()){
				busca = disciplinas.get(i);
				break;
			}
		}
		
		return busca;
	}


	@Override
	public ArrayList<Disciplina> ListaDisciplina() {
		return disciplinas;
	}

	//é necessário melhorias...
	@Override
	public void EditarDisciplinas(Disciplina disciplina)throws DisciplinaNaoEncontradaException{
			Disciplina novo = BuscarDisciplina(disciplina.getCodigo());
			if(novo != null){
				novo.setNome(disciplina.getNome());
				novo.setDescricao(disciplina.getDescricao());
			}else{
			throw new DisciplinaNaoEncontradaException();
			}
		
	}

	


}
